During a computer system start-up, the computer system is self-tested and initialized through loading and execution of system firmware. Under personal computer (PC) architectures, this firmware is commonly referred to as the system's Basic Input/Output System (BIOS). In a typical PC architecture, the BIOS is generally defined as the firmware that runs between the processor reset and the first instruction of the Operating System (OS) loader. This is commonly referred to as the pre-boot phase and precedes the OS boot phase. At the start of a boot, very little of the system beyond the processor and firmware is actually initialized. It is up to the code in the firmware to initialize the system to the point that an operating system loaded off of media, such as a hard disk, can take over.
In today's computer systems, the BIOS is stored in a non-volatile memory device, such as a flash memory device. If the non-volatile memory device should fail or the firmware stored thereon become corrupted, then the computer system may become unusable. While operating systems offer the ability to create a “rescue disk” to load minimal files necessary for running an operating system in a safe mode, the firmware of a computer system offers no corresponding ability to create such a “rescue disk” for the pre-boot phase of a computer system.
Manufactures of computer systems and peripherals may enclose an original firmware image, for example stored on a CD-ROM, with the purchase of a product having firmware. If the firmware should become corrupted, the user can recover the firmware by re-loading (e.g., re-flashing) the firmware from the original firmware image. However, when the original firmware image is re-loaded, configuration settings and firmware updates subsequent to the purchase of the platform will be lost. In the case of updating the BIOS of a computer system, when the user recovers the firmware, the platform may not function properly because the boot block of the original firmware image no longer matches the configuration of the platform. Additionally, with the proliferation of many computer system configurations and customizations within a single product line, the ability to disseminate and manage firmware code for each particular platform has become untenable.